1、1-n中1出现的次数
思想：判断当前为为0，1还是大于1
class Solution {
public:
    int NumberOf1Between1AndN_Solution(int n) {
        if(n==0)
            return 0;
        if(n<10)
            return 1;
        int count=0;
        //高位
        int high=n;
        //低位
        int low=0;
        //位数
        int digit=1;
        //当前位数
        int cur=0;
        while(high||cur)
        {
            cur=high%10;
            high/=10;
            if(cur==0)
            {
                count+=high*digit;
            }
            else if(cur==1)
            {
                count+=high*digit+low+1;
            }
            else
            {
                count+=(high+1)*digit;
            }
            low=digit*cur+low;
            digit*=10;
        }
        return count;
    }
};
2、最后剩下的人
思想：倒推法   
class Solution {
public:
    int LastRemaining_Solution(int n, int m) {
        if(n==0)
            return -1;
        int ans=0;
        for(int i=2;i<=n;i++)
        {
            ans=(ans+m)%i;
        }
        return ans;
    }
};